home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / PCCardAdapterPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  8.3 KB  |  202 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        PCCardAdapterPlugin.h
  3.  
  4.      Contains:    PC Card Socket Service Plug-In Programming Interface
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1996-1999 by Apple Computer, Inc. and SystemSoft Corporation. All rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __PCCARDADAPTERPLUGIN__
  18. #define __PCCARDADAPTERPLUGIN__
  19.  
  20. #ifndef __MACTYPES__
  21.     #include <MacTypes.h>
  22. #endif
  23.  
  24. #ifndef __NAMEREGISTRY__
  25.     #include <NameRegistry.h>
  26. #endif
  27.  
  28. #ifndef __INTERRUPTS__
  29.     #include <Interrupts.h>
  30. #endif
  31.  
  32. #ifndef __PCCARD__
  33.     #include <PCCard.h>
  34. #endif
  35.  
  36.  
  37.  
  38.  
  39. #if PRAGMA_ONCE
  40. #pragma once
  41. #endif
  42.  
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46.  
  47. #if PRAGMA_IMPORT
  48. #pragma import on
  49. #endif
  50.  
  51. #if PRAGMA_STRUCT_ALIGN
  52.     #pragma options align=power
  53. #elif PRAGMA_STRUCT_PACKPUSH
  54.     #pragma pack(push, 2)
  55. #elif PRAGMA_STRUCT_PACK
  56.     #pragma pack(2)
  57. #endif
  58.  
  59.  
  60. /*------------------------------------------------------------------------------------
  61.   Types
  62. ------------------------------------------------------------------------------------*/
  63. /*    Interrupt Status Change bits*/
  64.  
  65. enum {
  66.     kSCBatteryDead                = 0x01,                            /* Battery Dead Status Change*/
  67.     kSCBatteryLow                = 0x02,                            /* Battery Warning Status Change*/
  68.     kSCReady                    = 0x04,                            /* Ready Status Change*/
  69.     kSCCardDetect                = 0x08,                            /* Card Detect Status Change*/
  70.     kSCCardEjected                = 0x10,                            /* Card Ejected*/
  71.     kSCStatusChange                = 0x20,                            /* PC Card Status Change Signal Asserted*/
  72.     kSCRingIndicate                = 0x40                            /* PC Card Ring Indicate Signal Asserted*/
  73. };
  74.  
  75.  
  76. /*    IRQ bits */
  77. enum {
  78.     kIRQLevelMask                = 0x1F,
  79.     kIRQInvalid                    = 0x20,
  80.     kIRQHigh                    = 0x40,
  81.     kIRQEnable                    = 0x80
  82. };
  83.  
  84.  
  85. /*    bits for adapter characteristics flags*/
  86.  
  87. enum {
  88.     SS_ADPT_FLG_IND                = 0x01,                            /* indicators for write-protect, card lock,*/
  89.                                                                 /* battery status, busy status, and XIP*/
  90.                                                                 /* are shared for all sockets*/
  91.     SS_ADPT_FLG_PWR                = 0x02,                            /* if set indicates that the sockets*/
  92.                                                                 /* share the same power control*/
  93.     SS_ADPT_FLG_DBW                = 0x04,                            /* all windows on the adapter must use*/
  94.                                                                 /* the same Data Bus Width*/
  95.     SS_ADPT_FLG_CARDBUS            = 0x08,                            /* all sockets are CardBus PC Card capable*/
  96.     SS_ADPT_FLG_DMA                = 0x10,                            /* the adapter has DMA capability*/
  97.                                                                 /*    bits for adapter power characteristics*/
  98.     SS_ADPT_FLG_V33                = 0x20,                            /* adapter supports 3.3 volt power to socket*/
  99.     SS_ADPT_FLG_V50                = 0x40,                            /* adapter supports 5.0 volt power to socket*/
  100.     SS_ADPT_FLG_V12                = 0x80                            /* adapter supports 12.0 volt power to socket*/
  101. };
  102.  
  103.  
  104. /*------------------------------------------------------------------------------------
  105.   Calls exported by the Family
  106. ------------------------------------------------------------------------------------*/
  107. EXTERN_API_C( OSStatus )
  108. CSReportStatusChange            (const RegEntryID *        adapterRef,
  109.                                  PCCardSocket             whichSocket,
  110.                                  PCCardSCEvents         statusChange,
  111.                                  PCCardSocketStatus     socketStatus);
  112.  
  113. /*------------------------------------------------------------------------------------
  114.   Plugin Dispatch Table
  115. ------------------------------------------------------------------------------------*/
  116. typedef CALLBACK_API_C( OSStatus , SSValidateHardwareProc )(const RegEntryID *deviceID);
  117. typedef CALLBACK_API_C( OSStatus , SSInitializeProc )(const RegEntryID *deviceID, Boolean replacingOldDriver);
  118. typedef CALLBACK_API_C( OSStatus , SSSuspendProc )(const RegEntryID *deviceID);
  119. typedef CALLBACK_API_C( OSStatus , SSResumeProc )(const RegEntryID *deviceID);
  120. typedef CALLBACK_API_C( OSStatus , SSFinalizeProc )(const RegEntryID *deviceID, Boolean beingReplaced);
  121. typedef CALLBACK_API_C( OSStatus , SSInquireAdapterProc )(ItemCount *numberOfSockets, ItemCount *numberOfWindows, ItemCount *numberOfBridgeWindow, PCCardAdapterCapabilities *capabilities);
  122. typedef CALLBACK_API_C( OSStatus , SSInquireSocketProc )(PCCardSocket socket, ItemCount *numberOfWindows, PCCardSocketStatus *supportedSocketStatus, PCCardSCEvents *supportedStatusChange);
  123. typedef CALLBACK_API_C( OSStatus , SSGetSocketProc )(PCCardSocket socket, PCCardVoltage *Vcc, PCCardVoltage *Vpp, PCCardVoltage *Vs, PCCardInterfaceType *socketIF, PCCardCustomInterfaceID *customIFID, PCCardSocketStatus *socketStatus, PCCardSCEvents *SCEventsMask, PCCardIRQ *IRQ, PCCardDMA *DMA);
  124. typedef CALLBACK_API_C( OSStatus , SSSetSocketProc )(PCCardSocket socket, PCCardVoltage Vcc, PCCardVoltage Vpp, PCCardInterfaceType socketIF, PCCardCustomInterfaceID customIFID, PCCardSocketStatus statusReset, PCCardSCEvents SCEventsMask, PCCardIRQ IRQ, PCCardDMA DMA);
  125. typedef CALLBACK_API_C( OSStatus , SSResetSocketProc )(PCCardSocket socket);
  126. typedef CALLBACK_API_C( OSStatus , SSGetStatusProc )(PCCardSocket socket, PCCardSocketStatus *currentStatus, PCCardSocketStatus *changedStatus);
  127. typedef CALLBACK_API_C( OSStatus , SSInquireWindowProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PCCardWindowSize *windowSize, PCCardWindowAlign *windowAlign);
  128. typedef CALLBACK_API_C( OSStatus , SSGetWindowProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PhysicalAddress *startAddress, PCCardWindowSize *windowSize, PCCardWindowOffset *windowOffset, PCCardAccessSpeed *memSpeed);
  129. typedef CALLBACK_API_C( OSStatus , SSSetWindowProc )(PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState, PhysicalAddress startAddress, PCCardWindowSize windowSize, PCCardWindowOffset windowOffset, PCCardAccessSpeed memSpeed);
  130. typedef CALLBACK_API_C( OSStatus , SSGetWindowOffsetProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PCCardWindowOffset *windowOffset);
  131. typedef CALLBACK_API_C( OSStatus , SSSetWindowOffsetProc )(PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState, PCCardWindowOffset windowOffset);
  132. typedef CALLBACK_API_C( OSStatus , SSInquireBridgeWindowProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PCCardWindowSize *windowSize, PCCardWindowAlign *windowAlign);
  133. typedef CALLBACK_API_C( OSStatus , SSGetBridgeWindowProc )(PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState, PhysicalAddress *startAddress, PCCardWindowSize *windowSize);
  134. typedef CALLBACK_API_C( OSStatus , SSSetBridgeWindowProc )(PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState, PhysicalAddress startAddress, PCCardWindowSize windowSize);
  135. typedef CALLBACK_API_C( OSStatus , SSGetInterruptSetMemberProc )(PCCardSocket socket, InterruptSetMember *interruptSetMember);
  136. typedef CALLBACK_API_C( OSStatus , SSEjectCardProc )(PCCardSocket socket);
  137. enum {
  138.     kServiceTypePCCardAdapter    = FOUR_CHAR_CODE('sock'),
  139.     kPCCardAdapterPluginVersion    = 0x00000001,
  140.     kPCCardAdapterPluginCurrentVersion = kPCCardAdapterPluginVersion
  141. };
  142.  
  143.  
  144. struct PCCardAdapterPluginHeader {
  145.     UInt32                             version;
  146.     UInt32                             reserved1;
  147.     UInt32                             reserved2;
  148.     UInt32                             reserved3;
  149. };
  150. typedef struct PCCardAdapterPluginHeader PCCardAdapterPluginHeader;
  151.  
  152. struct PCCardAdapterPluginDispatchTable {
  153.     PCCardAdapterPluginHeader         header;
  154.  
  155.     SSValidateHardwareProc             validateHardware;
  156.  
  157.     SSInitializeProc                 initialize;
  158.     SSSuspendProc                     suspend;
  159.     SSResumeProc                     resume;
  160.     SSFinalizeProc                     finalize;
  161.  
  162.     SSInquireAdapterProc             inquireAdapter;
  163.     SSInquireSocketProc             inquireSocket;
  164.     SSGetSocketProc                 getSocket;
  165.     SSSetSocketProc                 setSocket;
  166.     SSResetSocketProc                 resetSocket;
  167.     SSGetStatusProc                 getStatus;
  168.     SSInquireWindowProc             inquireWindow;
  169.     SSGetWindowProc                 getWindow;
  170.     SSSetWindowProc                 setWindow;
  171.     SSGetWindowOffsetProc             getWindowOffset;
  172.     SSSetWindowOffsetProc             setWindowOffset;
  173.     SSInquireBridgeWindowProc         inquireBridgeWindow;
  174.     SSGetBridgeWindowProc             getBridgeWindow;
  175.     SSSetBridgeWindowProc             setBridgeWindow;
  176.     SSGetInterruptSetMemberProc     getInterruptSetMember;
  177.     SSEjectCardProc                 ejectCard;
  178. };
  179. typedef struct PCCardAdapterPluginDispatchTable PCCardAdapterPluginDispatchTable;
  180. typedef PCCardAdapterPluginDispatchTable * PCCardAdapterPluginDispatchTablePtr;
  181.  
  182. #if PRAGMA_STRUCT_ALIGN
  183.     #pragma options align=reset
  184. #elif PRAGMA_STRUCT_PACKPUSH
  185.     #pragma pack(pop)
  186. #elif PRAGMA_STRUCT_PACK
  187.     #pragma pack()
  188. #endif
  189.  
  190. #ifdef PRAGMA_IMPORT_OFF
  191. #pragma import off
  192. #elif PRAGMA_IMPORT
  193. #pragma import reset
  194. #endif
  195.  
  196. #ifdef __cplusplus
  197. }
  198. #endif
  199.  
  200. #endif /* __PCCARDADAPTERPLUGIN__ */
  201.  
  202.